<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class c_cliente extends CI_Controller {
    private $sessao = "";

    function __construct(){
        parent::__construct();
        $this->load->model("ClienteModel");
        $this->load->model("UsuarioModel");
        $this->load->model("Selects");
        $this->load->model("Log");
        $this->load->helper("auth");

        $this->sessao = c_logado();
    }

    public function editar(){

        $this->load->helper("form");
        $this->load->library("form_validation");

        $res = $this->db->get("estados");

        if( $res->num_rows() > 0 ) :
            $estados = "";
            foreach($res->result() as $estado) :
                if( $estado->abrev_uf == $this->sessao->estado ):
                    $estados .= "<option value=\"$estado->abrev_uf\" selected=\"selected\">$estado->nm_uf</option>\n";
                else :
                    $estados .= "<option value=\"$estado->abrev_uf\">$estado->nm_uf</option>\n";
                endif;
            endforeach;
        endif;

        $dados = array(
            "titulo" => "Edição de perfil",
            "user" => $this->sessao->nome,
            "cliente" => $this->sessao,
            "estados" => $estados
            );
        $main = array(
            "dados" => $dados,
            "link" => "cliente/c_edit_cliente_view",
            );

        $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[4]');
        $this->form_validation->set_rules('sobrenome', 'Sobrenome', 'required|min_length[4]');
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|callback_email_check');
        $this->form_validation->set_rules('website', 'Website');
        $this->form_validation->set_rules('telefone', 'Telefone', 'required');
        $this->form_validation->set_rules('pais', 'Pa&iacute;s', 'required');
        $this->form_validation->set_rules('cidade', 'Cidade', 'required');
        $this->form_validation->set_rules('estado', 'Estado', 'required');
        $this->form_validation->set_rules('senha', 'Senha', 'md5');
        $this->form_validation->set_rules('senha2', 'Confirmar senha', 'matches[senha]');
        $this->form_validation->set_rules('endereco', 'Endereco', 'required');
        $this->form_validation->set_rules('numero', 'Numero', 'required');
        $this->form_validation->set_rules('complemento', 'Complemento');
        $this->form_validation->set_rules('cep', 'CEP', 'required|min_lenght[8]');
        if($this->input->post("tipoPessoa") == "juridica"){
            $this->form_validation->set_rules('razaoSocial', 'Razão Social', 'required');
            $this->form_validation->set_rules('cnpj', 'CNPJ', 'required|callback_cnpj_check|callback_cnpj_validacao');
        }
        else
            $this->form_validation->set_rules('cnpj', 'CPF', 'required|callback_cnpj_check|callback_cpf_validacao');


        if ($this->form_validation->run() == false) :
            $this->load->view('template', $main);

        else :
            $campos = array(
                "nome" => $this->input->post("nome"),
                "sobrenome" => $this->input->post("sobrenome"),
                "razaoSocial" => $this->input->post("razaosocial"),
                "cnpj" => $this->input->post("cnpj"),
                "email" => $this->input->post("email"),
                "website" => $this->input->post("website"),
                "telefone" => $this->input->post("telefone"),
                "pais" => $this->input->post("pais"),
                "cidade" => $this->input->post("cidade"),
                "estado" => $this->input->post("estado"),
                "fax" => $this->input->post("fax"),
                "celular" => $this->input->post("celular"),
                "endereco" => $this->input->post("endereco"),
                "numero" => $this->input->post("numero"),
                "complemento" => $this->input->post("complemento"),
                "cep" => $this->input->post("cep")
            );

            if($this->input->post("senha") != "") $campos['senha'] = $this->input->post("senha");

            $this->ClienteModel->update($this->sessao->idCliente, $campos);
            $cliente = $this->ClienteModel->getCliente($this->sessao->idCliente);
            
            //atualiza o usuario
            $usuario = array(
                "email" => $campos['email'],
                "nome" => $campos['nome'],
                "sobrenome" => $campos['sobrenome'],
                "senha" => $campos['senha'],
                "ativo" => true
            );

            $this->UsuarioModel->updateEmail($cliente->email, $usuario);

            $usuario = $this->UsuarioModel->getUsuarioEmail($cliente->email);
            $cliente->idUsuario = $usuario->idUsuario;
            
            if($cliente->tipoPessoa == "fisica")
                $cliente->tipo = "cliente_fisico";
            else
                $cliente->tipo = "cliente_juridico";
            $this->session->set_userdata('user',$cliente);
            //echo $this->sessao->idCliente;
            //$this->load->view('template', $main);
            $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "editou", "cliente", $this->sessao->idCliente);
            redirect("home/index/sucesso");

        endif;
    }

    function email_check($str){
        $email = explode("@",$str);
        if ( $email[1] == "admin.com") {
            $this->form_validation->set_message('email_check', 'ERRO.');
            return FALSE;
        }

        elseif($str == $this->sessao->email)
            return TRUE;
        elseif($this->Selects->getClienteOrUsuarioEmail($str)){
            $this->form_validation->set_message('email_check', 'Já existe um Cliente ou Usuário com este e-mail');
            return FALSE;
        }
        else
            return true;
    }

    function cnpj_check($str){
        if($str == $this->sessao->cnpj)
            return TRUE;
        elseif ($this->ClienteModel->getClienteCnpj($str) != false) {
            $this->form_validation->set_message('cnpj_check', 'Já há um cadastro com este CNPJ.');
            return FALSE;
        }

        else 
            return TRUE;
    }

}